package cn.tedu.charging.order.controller;

import cn.tedu.charging.order.pojo.param.OrderAddParam;
import cn.tedu.charging.order.service.OrderService;
import cn.tedu.common.pojo.JsonResult;
import io.swagger.annotations.Api;
import io.swagger.annotations.ApiOperation;
import lombok.extern.slf4j.Slf4j;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.*;

@Slf4j
@RestController
@RequestMapping("/order")
@Api(tags = "订单接口")
public class OrderController {

    @Autowired
    //@Resource 常用注解的区别
    private OrderService orderService;

    /**
     * 创建订单
     * GET POST 的区别?
     * GET 放到URL 不安全
     * http://localhost:8080/order/create?userId=123&xx=xx
     * 内容的长度是有限制的 少
     * POST 放到请求体中 安全
     * 内容的长度要比GET 多
     *
     * RESTFul API 接口定义的规范
     * 希望你接口的调用方式 按照http的方式
     * R 资源
     * GET POST PUT DELETE 对资源的操作
     * CRUD
     * 1  增 POST
     * 2  读 GET
     * 3  改 PUT
     * 4  删 DELETE
     * 公司调用的方式 会退化  只用 GET POST
     * 创建订单 POST  /create/order    /order/create
     * 获取订单详情 GET /info/order/1  /order/info/1
     * 修改订单 PUT    /update/order/1  /order/update/1
     * 删除订单 DELETE /delete/order/1  /order/delete/1
     *
     * crateOrder  创建订单 驼峰
     * delOrder 删除订单
     * @param orderAddParam
     * @return
     */
    @ApiOperation("创建订单")
    @PostMapping("create")
    public JsonResult createOrder(@RequestBody OrderAddParam orderAddParam){
        //创建类型的接口，是否要返回出参，要根据业务来决定
        //如何后续的业务需要基于返回的出参，做其他的操作
        //比如 通过创建订单的出参 作为 查看订单详情 的 入参
        String orderNo = orderService.createOrder(orderAddParam);
        /*JsonResult jsonResult = new JsonResult<>();
        jsonResult.setCode(200);
        jsonResult.setMsg("创建订单成功");
        jsonResult.setData(orderNo);*/
        return JsonResult.ok(orderNo,"创建订单成功");
    }
}
